package com.github.facadefs;

import com.github.facadefs.util.Operation;

import java.io.IOException;

/**
 * 文件系统.
 * <p/>
 * 该接口定义一个与具体实现无关的文件系统接口, 方便操作 FTP/OSS/HDFS等系统.
 *
 * @author vacoor
 */
public interface FileSystem extends Operations {

    /**
     * 执行给定操作(该方法用于在一个连接中执行多个操作).
     *
     * @param operation 操作
     * @param <R>       执行结果
     * @return 执行结果
     * @throws IOException 如果文件系统异常
     * @since 1.2.0
     */
    <R> R execute(final Operation<Operations, R> operation) throws IOException;

}
